type: object
properties:
  type:
    description: 'the type of the resource'
    type: string
    enum:
      - MeshAccessLog
  mesh:
    description: 'Mesh is the name of the Kuma mesh this resource belongs to. It may be omitted for cluster-scoped resources.'
    type: string
    default: default
  name:
    description: 'Name of the Kuma resource'
    type: string
  spec:
    description: Spec is the specification of the Kuma MeshAccessLog resource.
    properties:
      from:
        description: From list makes a match between clients and corresponding configurations
        items:
          properties:
            default:
              description: |-
                Default is a configuration specific to the group of clients referenced in
                'targetRef'
              properties:
                backends:
                  items:
                    properties:
                      file:
                        description: FileBackend defines configuration for file based access logs
                        properties:
                          format:
                            description: |-
                              Format of access logs. Placeholders available on
                              https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators
                            properties:
                              json:
                                example:
                                  - key: start_time
                                    value: '%START_TIME%'
                                  - key: bytes_received
                                    value: '%BYTES_RECEIVED%'
                                items:
                                  properties:
                                    key:
                                      type: string
                                    value:
                                      type: string
                                  type: object
                                type: array
                              omitEmptyValues:
                                default: false
                                type: boolean
                              plain:
                                example: '[%START_TIME%] %KUMA_MESH% %UPSTREAM_HOST%'
                                type: string
                              type:
                                enum:
                                  - Plain
                                  - Json
                                type: string
                            required:
                              - type
                            type: object
                          path:
                            description: Path to a file that logs will be written to
                            example: /tmp/access.log
                            minLength: 1
                            type: string
                        required:
                          - path
                        type: object
                      openTelemetry:
                        description: Defines an OpenTelemetry logging backend.
                        properties:
                          attributes:
                            description: |-
                              Attributes can contain placeholders available on
                              https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators
                            example:
                              - key: mesh
                                value: '%KUMA_MESH%'
                            items:
                              properties:
                                key:
                                  type: string
                                value:
                                  type: string
                              type: object
                            type: array
                          body:
                            description: |-
                              Body is a raw string or an OTLP any value as described at
                              https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#field-body
                              It can contain placeholders available on
                              https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators
                            example:
                              kvlistValue:
                                values:
                                  - key: mesh
                                    value:
                                      stringValue: '%KUMA_MESH%'
                            x-kubernetes-preserve-unknown-fields: true
                          endpoint:
                            description: Endpoint of OpenTelemetry collector. An empty port defaults to 4317.
                            example: otel-collector:4317
                            minLength: 1
                            type: string
                        required:
                          - endpoint
                        type: object
                      tcp:
                        description: TCPBackend defines a TCP logging backend.
                        properties:
                          address:
                            description: Address of the TCP logging backend
                            example: 127.0.0.1:5000
                            minLength: 1
                            type: string
                          format:
                            description: |-
                              Format of access logs. Placeholders available on
                              https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators
                            properties:
                              json:
                                example:
                                  - key: start_time
                                    value: '%START_TIME%'
                                  - key: bytes_received
                                    value: '%BYTES_RECEIVED%'
                                items:
                                  properties:
                                    key:
                                      type: string
                                    value:
                                      type: string
                                  type: object
                                type: array
                              omitEmptyValues:
                                default: false
                                type: boolean
                              plain:
                                example: '[%START_TIME%] %KUMA_MESH% %UPSTREAM_HOST%'
                                type: string
                              type:
                                enum:
                                  - Plain
                                  - Json
                                type: string
                            required:
                              - type
                            type: object
                        required:
                          - address
                        type: object
                      type:
                        enum:
                          - Tcp
                          - File
                          - OpenTelemetry
                        type: string
                    required:
                      - type
                    type: object
                  type: array
              type: object
            targetRef:
              description: |-
                TargetRef is a reference to the resource that represents a group of
                clients.
              properties:
                kind:
                  description: Kind of the referenced resource
                  enum:
                    - Mesh
                    - MeshSubset
                    - MeshGateway
                    - MeshService
                    - MeshServiceSubset
                    - MeshHTTPRoute
                  type: string
                mesh:
                  description: Mesh is reserved for future use to identify cross mesh resources.
                  type: string
                name:
                  description: |-
                    Name of the referenced resource. Can only be used with kinds: `MeshService`,
                    `MeshServiceSubset` and `MeshGatewayRoute`
                  type: string
                proxyTypes:
                  description: |-
                    ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                    all data plane types are targeted by the policy.
                  items:
                    enum:
                      - Sidecar
                      - Gateway
                    type: string
                  minItems: 1
                  type: array
                tags:
                  additionalProperties:
                    type: string
                  description: |-
                    Tags used to select a subset of proxies by tags. Can only be used with kinds
                    `MeshSubset` and `MeshServiceSubset`
                  type: object
              type: object
          required:
            - targetRef
          type: object
        type: array
      targetRef:
        description: |-
          TargetRef is a reference to the resource the policy takes an effect on.
          The resource could be either a real store object or virtual resource
          defined in-place.
        properties:
          kind:
            description: Kind of the referenced resource
            enum:
              - Mesh
              - MeshSubset
              - MeshGateway
              - MeshService
              - MeshServiceSubset
              - MeshHTTPRoute
            type: string
          mesh:
            description: Mesh is reserved for future use to identify cross mesh resources.
            type: string
          name:
            description: |-
              Name of the referenced resource. Can only be used with kinds: `MeshService`,
              `MeshServiceSubset` and `MeshGatewayRoute`
            type: string
          proxyTypes:
            description: |-
              ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
              all data plane types are targeted by the policy.
            items:
              enum:
                - Sidecar
                - Gateway
              type: string
            minItems: 1
            type: array
          tags:
            additionalProperties:
              type: string
            description: |-
              Tags used to select a subset of proxies by tags. Can only be used with kinds
              `MeshSubset` and `MeshServiceSubset`
            type: object
        type: object
      to:
        description: To list makes a match between the consumed services and corresponding configurations
        items:
          properties:
            default:
              description: |-
                Default is a configuration specific to the group of destinations referenced in
                'targetRef'
              properties:
                backends:
                  items:
                    properties:
                      file:
                        description: FileBackend defines configuration for file based access logs
                        properties:
                          format:
                            description: |-
                              Format of access logs. Placeholders available on
                              https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators
                            properties:
                              json:
                                example:
                                  - key: start_time
                                    value: '%START_TIME%'
                                  - key: bytes_received
                                    value: '%BYTES_RECEIVED%'
                                items:
                                  properties:
                                    key:
                                      type: string
                                    value:
                                      type: string
                                  type: object
                                type: array
                              omitEmptyValues:
                                default: false
                                type: boolean
                              plain:
                                example: '[%START_TIME%] %KUMA_MESH% %UPSTREAM_HOST%'
                                type: string
                              type:
                                enum:
                                  - Plain
                                  - Json
                                type: string
                            required:
                              - type
                            type: object
                          path:
                            description: Path to a file that logs will be written to
                            example: /tmp/access.log
                            minLength: 1
                            type: string
                        required:
                          - path
                        type: object
                      openTelemetry:
                        description: Defines an OpenTelemetry logging backend.
                        properties:
                          attributes:
                            description: |-
                              Attributes can contain placeholders available on
                              https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators
                            example:
                              - key: mesh
                                value: '%KUMA_MESH%'
                            items:
                              properties:
                                key:
                                  type: string
                                value:
                                  type: string
                              type: object
                            type: array
                          body:
                            description: |-
                              Body is a raw string or an OTLP any value as described at
                              https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#field-body
                              It can contain placeholders available on
                              https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators
                            example:
                              kvlistValue:
                                values:
                                  - key: mesh
                                    value:
                                      stringValue: '%KUMA_MESH%'
                            x-kubernetes-preserve-unknown-fields: true
                          endpoint:
                            description: Endpoint of OpenTelemetry collector. An empty port defaults to 4317.
                            example: otel-collector:4317
                            minLength: 1
                            type: string
                        required:
                          - endpoint
                        type: object
                      tcp:
                        description: TCPBackend defines a TCP logging backend.
                        properties:
                          address:
                            description: Address of the TCP logging backend
                            example: 127.0.0.1:5000
                            minLength: 1
                            type: string
                          format:
                            description: |-
                              Format of access logs. Placeholders available on
                              https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators
                            properties:
                              json:
                                example:
                                  - key: start_time
                                    value: '%START_TIME%'
                                  - key: bytes_received
                                    value: '%BYTES_RECEIVED%'
                                items:
                                  properties:
                                    key:
                                      type: string
                                    value:
                                      type: string
                                  type: object
                                type: array
                              omitEmptyValues:
                                default: false
                                type: boolean
                              plain:
                                example: '[%START_TIME%] %KUMA_MESH% %UPSTREAM_HOST%'
                                type: string
                              type:
                                enum:
                                  - Plain
                                  - Json
                                type: string
                            required:
                              - type
                            type: object
                        required:
                          - address
                        type: object
                      type:
                        enum:
                          - Tcp
                          - File
                          - OpenTelemetry
                        type: string
                    required:
                      - type
                    type: object
                  type: array
              type: object
            targetRef:
              description: |-
                TargetRef is a reference to the resource that represents a group of
                destinations.
              properties:
                kind:
                  description: Kind of the referenced resource
                  enum:
                    - Mesh
                    - MeshSubset
                    - MeshGateway
                    - MeshService
                    - MeshServiceSubset
                    - MeshHTTPRoute
                  type: string
                mesh:
                  description: Mesh is reserved for future use to identify cross mesh resources.
                  type: string
                name:
                  description: |-
                    Name of the referenced resource. Can only be used with kinds: `MeshService`,
                    `MeshServiceSubset` and `MeshGatewayRoute`
                  type: string
                proxyTypes:
                  description: |-
                    ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                    all data plane types are targeted by the policy.
                  items:
                    enum:
                      - Sidecar
                      - Gateway
                    type: string
                  minItems: 1
                  type: array
                tags:
                  additionalProperties:
                    type: string
                  description: |-
                    Tags used to select a subset of proxies by tags. Can only be used with kinds
                    `MeshSubset` and `MeshServiceSubset`
                  type: object
              type: object
          required:
            - targetRef
          type: object
        type: array
    required:
      - targetRef
    type: object
